package com.ty.common.db.redis.constant;

/**
 * 公用 Redis Key 常量类
 * <p>该类包含了用于 Redis 操作的常量 Redis Key，方便在整个项目中统一使用和管理。</p>
 * @Author: TangYuan
 * @Date: 2025/8/20 14:13
 */
public class CommonKeyConstants {

    private CommonKeyConstants() {
        throw new IllegalStateException("这是一个实用程序类，无法实例化");
    }

    /**
     * 字典信息
     */
    public static final String SYS_DICT = "sys_dict";

    /**
     * 系统参数信息
     */
    public static final String SYS_CONFIG = "sys_config";

    /**
     * sa-token token信息
     */
    public static final String TOKEN_SESSION = "Authorization:login:token-session:${token}";

    /**
     * 系统用户登录密码失败次数
     */
    public static final String SYS_PWD_ERR_CNT = "err:pwd-cnt:${username}";

    /**
     * 验证码
     */
    public static final String CAPTCHA_REQUEST_ID = "captcha:slide:${requestId}";

    /**
     * 验证码请求次数限制
     */
    public static final String CAPTCHA_REQUEST_LIMIT = "captcha:request-limit:${requestId}";


    // 提供带参数替换的方法以提高安全性与可维护性

    public static String getTokenSessionKey(String token) {
        return TOKEN_SESSION.replace("${token}", token);
    }

    public static String getSysPwdErrCntKey(String username) {
        return SYS_PWD_ERR_CNT.replace("${username}", username);
    }

    public static String getCaptchaRequestIdKey(String requestId) {
        return CAPTCHA_REQUEST_ID.replace("${requestId}", requestId);
    }

    public static String getCaptchaRequestLimitKey(String requestId) {
        return CAPTCHA_REQUEST_LIMIT.replace("${requestId}", requestId);
    }
}
